//package edu.hubu.supermarketmanagementsystem.service.impl;
//
//import edu.hubu.supermarketmanagementsystem.entity.Product;
//import edu.hubu.supermarketmanagementsystem.mapper.ProductMapper;
//import edu.hubu.supermarketmanagementsystem.service.ProductService;
//import edu.hubu.supermarketmanagementsystem.vo.ResultVO;
//import org.junit.jupiter.api.BeforeEach;
//import org.junit.jupiter.api.Test;
//import org.junit.jupiter.api.extension.ExtendWith;
//import org.mockito.InjectMocks;
//import org.mockito.Mock;
//import org.mockito.junit.jupiter.MockitoExtension;
//import java.util.Arrays;
//import java.util.List;
//import static org.junit.jupiter.api.Assertions.*;
//import static org.mockito.Mockito.*;
//
//@ExtendWith(MockitoExtension.class)
//class ProductServiceImplTest {
//
//    @Mock
//    private ProductMapper productMapper;
//
//    @InjectMocks
//    private ProductServiceImpl productService;
//
//    private Product product;
//
//    @BeforeEach
//    void setUp() {
//        product = new Product();
//        product.setProductId(1);
//        product.setProductName("Test Product");
//        product.setCategory("Test Category");
//        product.setStock(100);
//    }
//
//    @Test
//    void addProductTest() {
//        // 模拟插入商品，并验证返回结果
//        doNothing().when(productMapper).insertProduct(product);
//        ResultVO<String> result = productService.addProduct(product);
//        assertEquals(200, result.getCode());
//        assertEquals("Product added successfully", result.getMsg());
//    }
//
//    @Test
//    void deleteProductByIdTest() {
//        // 模拟删除商品，并验证返回结果
//        when(productMapper.existsById(product.getProductId())).thenReturn(1);
//        doNothing().when(productMapper).deleteProductById(product.getProductId());
//        ResultVO<String> result = productService.deleteProductById(product.getProductId());
//        assertEquals(200, result.getCode());
//        assertEquals("Product deleted successfully", result.getMsg());
//    }
//
//    @Test
//    void updateProductTest() {
//        // 模拟更新商品，并验证返回结果
//        when(productMapper.existsById(product.getProductId())).thenReturn(1);
//        doNothing().when(productMapper).updateProduct(product);
//        ResultVO<String> result = productService.updateProduct(product);
//        assertEquals(200, result.getCode());
//        assertEquals("Product updated successfully", result.getMsg());
//    }
//
//    @Test
//    void getProductByIdTest() {
//        // 模拟根据商品ID查询商品，并验证返回结果
//        when(productMapper.selectById(product.getProductId())).thenReturn(product);
//        ResultVO<Product> result = productService.getProductById(product.getProductId());
//        assertEquals(200, result.getCode());
//        assertNotNull(result.getData());
//    }
//
//    @Test
//    void searchProductsByNameTest() {
//        // 模拟根据商品名称模糊查询商品，并验证返回结果
//        List<Product> productList = Arrays.asList(product);
//        when(productMapper.searchByName("Test")).thenReturn(productList);
//        ResultVO<List<Product>> result = productService.searchProductsByName("Test");
//        assertEquals(200, result.getCode());
//        assertEquals(1, result.getData().size());
//    }
//
//    @Test
//    void getAllProductsTest() {
//        // 模拟分页查询所有商品，并验证返回结果
//        List<Product> productList = Arrays.asList(product);
//        when(productMapper.selectAll(0, 10)).thenReturn(productList);
//        ResultVO<List<Product>> result = productService.getAllProducts(1, 10);
//        assertEquals(200, result.getCode());
//        assertEquals(1, result.getData().size());
//    }
//
//    @Test
//    void getProductsByCategoryTest() {
//        // 模拟按类别查询商品，并验证返回结果
//        List<Product> productList = Arrays.asList(product);
//        when(productMapper.selectByCategory("Test Category")).thenReturn(productList);
//        ResultVO<List<Product>> result = productService.getProductsByCategory("Test Category");
//        assertEquals(200, result.getCode());
//        assertEquals(1, result.getData().size());
//    }
//
//    @Test
//    void updateStockTest() {
//        // 模拟更新库存，并验证返回结果
//        when(productMapper.selectById(product.getProductId())).thenReturn(product);
//        doNothing().when(productMapper).updateStock(product.getProductId(), 10);
//        ResultVO<String> result = productService.updateStock(product.getProductId(), 10);
//        assertEquals(200, result.getCode());
//        assertEquals("Stock updated successfully", result.getMsg());
//    }
//
//    @Test
//    void isProductExistsTest() {
//        // 模拟验证商品是否存在，并验证返回结果
//        when(productMapper.existsById(product.getProductId())).thenReturn(1);
//        assertTrue(productService.isProductExists(product.getProductId()));
//    }
//}
